Mobile and desktop software are created with a set of local APIs which perform a series of tasks: complex computation, delivery of device capabilities, algorithms, artificial intelligence and graphic acceleration. Local APIs connect software with hardware. Local software then accesses web-based APIs to connect web services to other web-based APIs. Through this method, data can be accessed by external service providers. Once created, web-based APIs may be scaled in their range of functions and uses by making them available to developers. Developers in turn use web-based APIs to develop a range of functions for websites and mobile software applications.
User access to web-based APIs allows groups or individuals to have a meaningful interaction with data, and because of this, they have become a popular way of distributing services. Web-based companies like Salesforce and Amazon have paved the way for consumer-oriented APIs and companies like Facebook, Skype and Foursquare have introduced social, communication and location-oriented APIs into the mainstream. This trend has been made popular by rapidly advancing smartphone innovations and these innovations have given web-based APIs a portable point of entry. This has been an important development because it has given individuals ready access to the vast range of data and functions APIs can offer.
API popularity among developers has created a change in the tech industry whereby online services have evolved from strictly information and commerce into services which address a range of social and physical data collection. The most secure and efficient way of delivering new services across all connected devices has been through the invention and adaptation of web-based APIs.
The current library of API are increasing exponentially. This increasingly vast API universe and the ability to mix and match functionality has given birth to what is commonly known as a Mashup. Mashups are a way for developers to cherry-pick useful functions from web-based API services. This is because API functions are features of a total software package. For example, Twilio offers telephone services over the web, but these APIs are not meaningful until they are combined with location-based services and customer relationship software. Twilio is a very popular API service for developers, but it only represents a fraction of the kind of APIs that are currently available and might become available in the future.
Web-based APIs also point to a trend in software creation away from the standard software development model. This trend became more apparent when companies like Kinvey, Parse and StackMob moved the database layer of software design into a web-based API service.
In the near future, it is conceivable that all software development will rely less on local APIs and more on web-based APIs. When this happens, all software will be constructed using a combination of functionality delivered via web-based APIs. Eventually, developers will no longer need to build bespoke software. Instead, engineers will program new software functionality into a cloud computer and sell this functionality through an API. With this ecosystem in place, multiple APIs can be combined to create new combinations of useful software.
Evidence of this interconnected software development paradigm can be found on Apple's iCloud service. Currently, this service only supports file contents and device settings between multiple iOS devices, but it is reasonable to infer that Apple has every intention of supporting its own system so that it does a great deal more than it does at present. However, there is no logical reason why this service approach should be restricted to Apple.
Cross-platform compilation is the term given to the compiling of software from a single code base that can then be deployed to multiple platforms or operating systems. To achieve successful cross-platform compilation, it is critical that the machine code produced meets the requirements of the targeted system. This can be a challenging task because of the differences between the existing platform software, hardware and CPU bits. These problems are further complicated when producing games, because the cross-platform compiler must also account for graphics processing.
The set of devices running a specific platform (iOS, Android, etc.) has multiple operating system versions, different hardware, and different screen sizes. This raises a problem for which two common solutions have emerged. The first solution is to embed a web browser in a native wrapper which allows developers to program applications using HTML, Javascript, and CSS. The second solution is to use a cross-compilation IDE that allow developers to compile apps to multiple platforms and devices. The former is more scalable and easier to use, while the latter delivers to fewer platforms, but produces higher performance applications.
The problem of cross-platform display differences & usability implementations has pushed developers to target a single platform. Many companies have tried to build universal tools for developers that allow them to build once and deploy to all platforms. The complexity of an ever-growing number of operating systems, the operating system versions and OEM modified versions fragment the market to the point where cross-compilation becomes a futile task. Many cross-compilers have gone out of business, while others continue to struggle to deliver applications to 2 or 3 different operating systems. The best of breed in this class, Mono and PhoneGap, have managed this task more thoroughly than any of their predecessors and competitors. Still, they only fully support 4 platforms. As the number of platforms they support grows, so does their code base, making their software difficult to scale. Handling incoming data, executing on it, and making it meaningful without needing custom code, is nearly impossible.